package com.user.domain.pojo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

/**
 * <p>
 * 用户操作日志表
 * </p>
 *
 * @author 小杰大人
 * @since 2025-02-28
 */
@Getter
@Setter
@TableName("user_operate_logs")
@ApiModel(value = "UserOperateLogs对象", description = "用户操作日志表")
public class UserOperateLogs implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty("主键id")
    @TableId("id")
    private Long id;

    @ApiModelProperty("操作时间")
    @TableField("operate_time")
    private LocalDateTime operateTime;

    @ApiModelProperty("操作用户id")
    @TableField("user_id")
    private Long userId;

    @ApiModelProperty("操作类型 操作类型 INSERT, UPDATE, DELETE等")
    @TableField("operate_type")
    private String operateType;

    @ApiModelProperty("操作状态，如：1成功，2失败等")
    @TableField("operate_status")
    private Integer operateStatus;

    @ApiModelProperty("操作的资源类型，如：USER, ORDER, PRODUCT等")
    @TableField("resource_type")
    private String resourceType;

    @ApiModelProperty("操作的资源ID，如果操作与特定资源相关")
    @TableField("resource_id")
    private Long resourceId;

    @ApiModelProperty("操作的详细信息，如：操作前后的数据变化等")
    @TableField("action_details")
    private String actionDetails;

    @ApiModelProperty("用户的IP地址，用于定位用户位")
    @TableField("ip_address")
    private String ipAddress;

    @ApiModelProperty("用户代理信息，用于识别用户使用的设备和浏览器")
    @TableField("user_agent")
    private String userAgent;

    @ApiModelProperty("其他附加信息，以JSON格式存储，如：请求参数、响应结果等")
    @TableField("additional_info")
    private String additionalInfo;
}
